package com.gxa.javaserver.controller;

import com.gxa.javaserver.dto.Response;
import com.gxa.javaserver.dto.ResultDO;
import com.gxa.javaserver.pojo.Admin;
import com.gxa.javaserver.pojo.AdminVo;
import com.gxa.javaserver.service.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.security.auth.login.LoginException;
import javax.servlet.http.HttpSession;
import java.util.Arrays;

/**
 * 后台的控制器
 * @author:Teacher黄
 * @date:Created at 2020/06/02
 */
@Controller
public class AdminController {

    @Autowired
    private AdminService adminService;


    /**
     * 后台首页
     * @return
     */
    @GetMapping({"/","/index"})
    public String index(){
        return "index";
    }


    /**
     * 欢迎页
     * @return
     */
    @GetMapping("/welcome")
    public String welcome(){
        return "welcome";
    }


    /**
     * 登陆页面
     * @return
     */
    @GetMapping("/login/page")
    public String loginPage(){
        return "login";
    }


    /**
     * 管理员列表页面
     * @return
     */
    @GetMapping("/admin/list/page")
    public String adminListPage(){
        return "admin/admin-list";
    }


    /**
     * 获取管理员数据列表
     * @return
     */
    @PostMapping("/admin/list")
    @ResponseBody
    public ResultDO adminList(AdminVo adminVo){
        return adminService.list(adminVo);
    }


    /**
     * 管理员添加页面
     * @return
     */
    @GetMapping("/admin/add/page")
    public String adminAddPage(){
        return "admin/admin-add";
    }


    /**
     * 添加管理员的方法
     * @param admin
     * @return
     */
    @PostMapping("/admin/add")
    @ResponseBody
    public ResultDO adminAdd(Admin admin){
        return adminService.add(admin);
    }


    /**
     * 登陆的方法
     * @param admin : 管理对象
     * @param session : session对象
     * @return
     */
    @PostMapping("/login/do")
    @ResponseBody
    public ResultDO login(Admin admin, HttpSession session) throws LoginException {
        return adminService.login(admin, session);
    }

    /**
     * 退出登陆的方法
     * @return
     */
    @PostMapping("/logout")
    @ResponseBody
    public ResultDO logout(HttpSession session){
        // 将session中保存的数据置为null
        session.setAttribute("admin",null);
        return Response.success();
    }


    /**
     * 删除的操作
     * @param ids
     * @return
     */
    @PostMapping("/admin/delete")
    @ResponseBody
    public ResultDO delete(@RequestParam(name = "ids[]") String[] ids){
        return adminService.delete(ids);
    }


}
